{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.naive_bayes import BernoulliNB #伯努利贝叶斯分类器\n",
    "from sklearn.metrics import accuracy_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# https://zhuanlan.zhihu.com/p/370858307"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 该集合以文本的形式记录了多种蘑菇的菌盖，菌柄，菌丝等部位的颜色，宽度，长度数据。 \n",
    "# 数据集一共有8124条特征记录，22个特征维度，并对这些蘑菇划分成两类（class）：e——可食用；p——有毒的。\n",
    "mushrooms = pd.read_csv(\"../data/mushrooms.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class</th>\n",
       "      <th>cap-shape</th>\n",
       "      <th>cap-surface</th>\n",
       "      <th>cap-color</th>\n",
       "      <th>bruises</th>\n",
       "      <th>odor</th>\n",
       "      <th>gill-attachment</th>\n",
       "      <th>gill-spacing</th>\n",
       "      <th>gill-size</th>\n",
       "      <th>gill-color</th>\n",
       "      <th>...</th>\n",
       "      <th>stalk-surface-below-ring</th>\n",
       "      <th>stalk-color-above-ring</th>\n",
       "      <th>stalk-color-below-ring</th>\n",
       "      <th>veil-type</th>\n",
       "      <th>veil-color</th>\n",
       "      <th>ring-number</th>\n",
       "      <th>ring-type</th>\n",
       "      <th>spore-print-color</th>\n",
       "      <th>population</th>\n",
       "      <th>habitat</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>p</td>\n",
       "      <td>x</td>\n",
       "      <td>s</td>\n",
       "      <td>n</td>\n",
       "      <td>t</td>\n",
       "      <td>p</td>\n",
       "      <td>f</td>\n",
       "      <td>c</td>\n",
       "      <td>n</td>\n",
       "      <td>k</td>\n",
       "      <td>...</td>\n",
       "      <td>s</td>\n",
       "      <td>w</td>\n",
       "      <td>w</td>\n",
       "      <td>p</td>\n",
       "      <td>w</td>\n",
       "      <td>o</td>\n",
       "      <td>p</td>\n",
       "      <td>k</td>\n",
       "      <td>s</td>\n",
       "      <td>u</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>e</td>\n",
       "      <td>x</td>\n",
       "      <td>s</td>\n",
       "      <td>y</td>\n",
       "      <td>t</td>\n",
       "      <td>a</td>\n",
       "      <td>f</td>\n",
       "      <td>c</td>\n",
       "      <td>b</td>\n",
       "      <td>k</td>\n",
       "      <td>...</td>\n",
       "      <td>s</td>\n",
       "      <td>w</td>\n",
       "      <td>w</td>\n",
       "      <td>p</td>\n",
       "      <td>w</td>\n",
       "      <td>o</td>\n",
       "      <td>p</td>\n",
       "      <td>n</td>\n",
       "      <td>n</td>\n",
       "      <td>g</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>e</td>\n",
       "      <td>b</td>\n",
       "      <td>s</td>\n",
       "      <td>w</td>\n",
       "      <td>t</td>\n",
       "      <td>l</td>\n",
       "      <td>f</td>\n",
       "      <td>c</td>\n",
       "      <td>b</td>\n",
       "      <td>n</td>\n",
       "      <td>...</td>\n",
       "      <td>s</td>\n",
       "      <td>w</td>\n",
       "      <td>w</td>\n",
       "      <td>p</td>\n",
       "      <td>w</td>\n",
       "      <td>o</td>\n",
       "      <td>p</td>\n",
       "      <td>n</td>\n",
       "      <td>n</td>\n",
       "      <td>m</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>p</td>\n",
       "      <td>x</td>\n",
       "      <td>y</td>\n",
       "      <td>w</td>\n",
       "      <td>t</td>\n",
       "      <td>p</td>\n",
       "      <td>f</td>\n",
       "      <td>c</td>\n",
       "      <td>n</td>\n",
       "      <td>n</td>\n",
       "      <td>...</td>\n",
       "      <td>s</td>\n",
       "      <td>w</td>\n",
       "      <td>w</td>\n",
       "      <td>p</td>\n",
       "      <td>w</td>\n",
       "      <td>o</td>\n",
       "      <td>p</td>\n",
       "      <td>k</td>\n",
       "      <td>s</td>\n",
       "      <td>u</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>e</td>\n",
       "      <td>x</td>\n",
       "      <td>s</td>\n",
       "      <td>g</td>\n",
       "      <td>f</td>\n",
       "      <td>n</td>\n",
       "      <td>f</td>\n",
       "      <td>w</td>\n",
       "      <td>b</td>\n",
       "      <td>k</td>\n",
       "      <td>...</td>\n",
       "      <td>s</td>\n",
       "      <td>w</td>\n",
       "      <td>w</td>\n",
       "      <td>p</td>\n",
       "      <td>w</td>\n",
       "      <td>o</td>\n",
       "      <td>e</td>\n",
       "      <td>n</td>\n",
       "      <td>a</td>\n",
       "      <td>g</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  class cap-shape cap-surface cap-color bruises odor gill-attachment  \\\n",
       "0     p         x           s         n       t    p               f   \n",
       "1     e         x           s         y       t    a               f   \n",
       "2     e         b           s         w       t    l               f   \n",
       "3     p         x           y         w       t    p               f   \n",
       "4     e         x           s         g       f    n               f   \n",
       "\n",
       "  gill-spacing gill-size gill-color  ... stalk-surface-below-ring  \\\n",
       "0            c         n          k  ...                        s   \n",
       "1            c         b          k  ...                        s   \n",
       "2            c         b          n  ...                        s   \n",
       "3            c         n          n  ...                        s   \n",
       "4            w         b          k  ...                        s   \n",
       "\n",
       "  stalk-color-above-ring stalk-color-below-ring veil-type veil-color  \\\n",
       "0                      w                      w         p          w   \n",
       "1                      w                      w         p          w   \n",
       "2                      w                      w         p          w   \n",
       "3                      w                      w         p          w   \n",
       "4                      w                      w         p          w   \n",
       "\n",
       "  ring-number ring-type spore-print-color population habitat  \n",
       "0           o         p                 k          s       u  \n",
       "1           o         p                 n          n       g  \n",
       "2           o         p                 n          n       m  \n",
       "3           o         p                 k          s       u  \n",
       "4           o         e                 n          a       g  \n",
       "\n",
       "[5 rows x 23 columns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mushrooms.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "class                       0\n",
       "cap-shape                   0\n",
       "cap-surface                 0\n",
       "cap-color                   0\n",
       "bruises                     0\n",
       "odor                        0\n",
       "gill-attachment             0\n",
       "gill-spacing                0\n",
       "gill-size                   0\n",
       "gill-color                  0\n",
       "stalk-shape                 0\n",
       "stalk-root                  0\n",
       "stalk-surface-above-ring    0\n",
       "stalk-surface-below-ring    0\n",
       "stalk-color-above-ring      0\n",
       "stalk-color-below-ring      0\n",
       "veil-type                   0\n",
       "veil-color                  0\n",
       "ring-number                 0\n",
       "ring-type                   0\n",
       "spore-print-color           0\n",
       "population                  0\n",
       "habitat                     0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查找缺失值：\n",
    "mushrooms.isnull().sum()\n",
    "# 从结果看数据中没有缺失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 首先将待测的分类特征（有毒与可食用）划分出来。\n",
    "train=mushrooms.drop([\"class\"],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 由于这个数据是以文本的形式记录的，直接建模的话，算法会识别不出来，所以需要把其中的文本数据依次替换成数字，\n",
    "# 如特征维度菌盖（cap-color）包含十种颜色，将这十种颜色分别以数字0-9替换表示\n",
    "for i in train.columns:\n",
    "    a=list(set(train[i]))###set是获得去重元素值\n",
    "    for m in range(len(a)):\n",
    "        train[i].loc[train[i]==a[m]]=m"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cap-shape</th>\n",
       "      <th>cap-surface</th>\n",
       "      <th>cap-color</th>\n",
       "      <th>bruises</th>\n",
       "      <th>odor</th>\n",
       "      <th>gill-attachment</th>\n",
       "      <th>gill-spacing</th>\n",
       "      <th>gill-size</th>\n",
       "      <th>gill-color</th>\n",
       "      <th>stalk-shape</th>\n",
       "      <th>...</th>\n",
       "      <th>stalk-surface-below-ring</th>\n",
       "      <th>stalk-color-above-ring</th>\n",
       "      <th>stalk-color-below-ring</th>\n",
       "      <th>veil-type</th>\n",
       "      <th>veil-color</th>\n",
       "      <th>ring-number</th>\n",
       "      <th>ring-type</th>\n",
       "      <th>spore-print-color</th>\n",
       "      <th>population</th>\n",
       "      <th>habitat</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 22 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  cap-shape cap-surface cap-color bruises odor gill-attachment gill-spacing  \\\n",
       "0         0           3         8       0    2               1            1   \n",
       "1         0           3         1       0    4               1            1   \n",
       "2         1           3         0       0    3               1            1   \n",
       "3         0           2         0       0    2               1            1   \n",
       "4         0           3         4       1    7               1            0   \n",
       "\n",
       "  gill-size gill-color stalk-shape  ... stalk-surface-below-ring  \\\n",
       "0         1          8           1  ...                        3   \n",
       "1         0          8           1  ...                        3   \n",
       "2         0         10           1  ...                        3   \n",
       "3         1         10           1  ...                        3   \n",
       "4         0          8           0  ...                        3   \n",
       "\n",
       "  stalk-color-above-ring stalk-color-below-ring veil-type veil-color  \\\n",
       "0                      1                      1         0          1   \n",
       "1                      1                      1         0          1   \n",
       "2                      1                      1         0          1   \n",
       "3                      1                      1         0          1   \n",
       "4                      1                      1         0          1   \n",
       "\n",
       "  ring-number ring-type spore-print-color population habitat  \n",
       "0           1         0                 5          5       6  \n",
       "1           1         0                 7          4       5  \n",
       "2           1         0                 7          4       0  \n",
       "3           1         0                 5          5       6  \n",
       "4           1         3                 7          1       5  \n",
       "\n",
       "[5 rows x 22 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 划分列索引为特征值和预测值，并将数据划分成训练集和测试集\n",
    "X_train,X_test,y_train,y_test=train_test_split(train,mushrooms[\"class\"],random_state=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "伯努利贝叶斯训练模型评分：0.8811751189890038\n",
      "伯努利贝叶斯待测模型评分：0.8838010832102413\n",
      "运行时间：0.07423901557922363\n"
     ]
    }
   ],
   "source": [
    "# 引入伯努利算法，并将算法中的参数依次设立好，进行建模后，对测试集进行精度评分：\n",
    "# 引入时间模块，统计运行时间\n",
    "import time\n",
    "start=time.time()\n",
    "clf=BernoulliNB(alpha=10)\n",
    "train_prediction=clf.fit(X_train,y_train).predict(X_train)\n",
    "test_prediction=clf.fit(X_train,y_train).predict(X_test)\n",
    "print(\"伯努利贝叶斯训练模型评分：\"+str(accuracy_score(y_train,train_prediction)))\n",
    "print(\"伯努利贝叶斯待测模型评分：\"+str(accuracy_score(y_test,test_prediction)))\n",
    "end=time.time()\n",
    "print (\"运行时间：\"+str(end-start))#时间单位是秒"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# MultinomialNB与BernoulliNB都只有一个参数alpha，用于控制模型复杂度\n",
    "# alpha的工作原理：算法向数据中添加alpha这么多的虚拟数据点，这些点对所有特征都取正值\n",
    "# 这可以将统计数据“平滑化”。alpha越大，平滑化就越强，模型复杂度就越低\n",
    "# 朴素贝叶斯分类器的算法性能对alpha值的鲁棒性相对较好，也就是说，alpha值对模型性能并不重要，但调用这参数通常都会使精度略有提高\n",
    "from sklearn.naive_bayes import MultinomialNB # 多项式贝叶斯分类器\n",
    "\n",
    "result=pd.DataFrame(columns=[\"参数\",\"伯努利训练模型得分\",\"伯努利待测模型得分\",\"多项式训练模型得分\",\"多项式待测模型得分\"])\n",
    "for i in range(1,300):\n",
    "    Bernoulli=BernoulliNB(alpha=i).fit(X_train,y_train)\n",
    "    Multinomial=MultinomialNB(alpha=i).fit(X_train,y_train)\n",
    "    result=result.append([{\"参数\":i,\"伯努利训练模型得分\":accuracy_score(y_train,Bernoulli.predict(X_train))\n",
    "                           ,\"伯努利待测模型得分\":accuracy_score(y_test,Bernoulli.predict(X_test))\n",
    "                           ,\"多项式训练模型得分\":accuracy_score(y_train,Multinomial.predict(X_train))\n",
    "                           ,\"多项式待测模型得分\":accuracy_score(y_test,Multinomial.predict(X_test))}])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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HxYWxuHDhwuxRnKmKu62Ex4eTlBQwcLzou6pFxEREREROaHU1FT+/PNPoqOjMcu2i1eOQkNDCQsLK+SayZmoONuOc474+HgiIyMLFNgX5UJ5IiIiIiIi+XL06NGTCuhFSiszIzo6+qRGpWSmoF5EREREREokBfRytjiVtq6gXkRERERERKSUUlAvIiIiIiJSBFatWsWaNWv80ubOncs333yT53mjR49m3bp1hVm102rlypXEx8f7pa1YsYLffvuteCqUD0ePHmXkyJEkJycXd1VOmoJ6ERERERGRIjBu3Dg+++wz37FzjmeeeYYtW7bkes6ePXt4/vnnOeeccwDYunUrjRo18ntdccUV/Pnnn75zDhw4wNatW/n2229ZtGgRb7/9NiNGjKBz587ce++9foHru+++S9OmTX3H6enp/O1vf2Py5Mm+tNWrV3Pttddmq1v9+vVZtmyZX9qxY8fo3LkzX375pV96v3792Lp1a57vz6ZNm4iOjvYdJyUlER0dzc6dOwFYtmwZ9evXz3be6tWriY6OzvFVqVIlZs6cSYsWLUhNTfW7XmYjRoxgxYoVpKWl5XqtVq1a5Vr3o0ePMnbsWNLS0gA4fvw4vXr1yvN3e7po9XsREREREZFCtm/fPpYuXcqwYcPYt28fAAsWLODYsWPExsb60sqXL09ISAjz58+nU6dOvvMbNmwIwO23307dunUxM3r27Mny5cuZMWMGkZGRvrJr165l5MiRREdHExkZyaJFi5gwYQLt27enVq1afPfdd4waNYp33nknWz0DAgJ47bXXaNWqFcHBwXTq1InU1FSOHDkCwPPPP8+ePXsYO3Zsjs85adIkYmJiaN26Na1bt2blypW+vLZt2/qVbdasGR9++GG2a6Snp/Poo4/6AuQRI0YQERHBnj17OHToEP379ycmJoYnn3wSgKuuuoqtW7cyePBgKleuTL9+/Zg0aRLr1q3j9ddf5/PPP8/zdzNv3jxmzZrFihUrCAjw9HsvXLiQSpUq+ZVZuHBhrtd44403+PDDD/n73/8OQEhICLt27WLhwoXUrVs3z/ufKgX1IiIiIiIihWzcuHFcffXVXHTRRcTExPjlXX755b6f586dy4033kjLli35+uuvueGGG5gxYwaXXnoprVq1ok2bNqSmpjJmzBiaNm3KtGnTuPnmm/2ud/PNN/vSNm3axOLFi2nXrp0v/8iRI3kO569UqRJz5szJVk/wbDWYkpKS43kHDx7klVde4aWXXmL9+vV06tSJt956i5kzZ7Jw4UKmTJniVz40NBTwjFjYv38/hw4dAjxfgISFhREeHg5AhQoViIqK4tixYwQEBFCxYkXKly/vu05wcDCVKlXynVOpUiUiIyMJCQmhYsWKuT4nwFtvvcWTTz7J+PHj/YL4W2+9NVvZnEYrAGzcuJFRo0Yxffp0v/RHH32UBx54gHvvvZfzzjsvz3qcCgX1IiIiIiIihej777/nzTff5IUXXvClbdy4kQsuuMCvXOah5aGhocyaNYvq1atz3XXX8c033/D7779z6623kpqaytChQxk0aBAffvghK1as8LvOsmXLWL16NQD79+8nNTWVf/7znzneJ7O0tDS/YL9KlSon9ZxPPPEE559/Pu3ateOuu+6iSZMmpKamsmLFCi677DJSU1MpV66c36gC8HwZcMkll/iOL730Ujp06ECbNm1Yv349LVq0ICoqih07dpCSksJtt91GgwYNfOUHDRrEhAkTfMcvvfSS7+fo6Ohcg3GAHTt2MG3aNK677jpatmzJq6++CnjWBahcubKv3Jw5c3j//feznb9lyxbat29Pz549iY2N9ctr3rw5bdu2pV27dsyePZtq1aqd6C0sEAX1IiIiIiIihSQpKYnevXuTnJxMcHDwSZ17/Phx4uPjadSoESEhIfTs2dMXEN99992MHz+eXr16Ubt2bb/zEhIS2L9/P4BvHnvGMeAb1p7V0aNHefDBBwHYtWsXX3/9dbZr52bHjh3MmDGDxo0bc8cdd3D48GGaNWtGvXr1fGUmTJjAk08+yaBBg/zOrVChAvHx8SxevJj27dtz6NAhkpOTqVy5Mh06dGDJkiV+dezUqRPfffedL+2pp55i4MCB9O3blyuvvJLOnTv7ht+/9tprLFq0iGnTpuVY72eeeQbwjKRwzvm+XGjSpEm2slm/HJg9ezYDBgygffv2DB8+PMfrjx49mn79+nH99dczaNAg+vTpk9fbWCAK6kVEREREpNSInry7WO4b37Vqgc7r1asXKSkpfsFtfj3zzDN07dqVFi1asHv3brZv387u3bt55plnmDNnDrfddhsTJ07EOUe3bt18Afjtt9/O7bffDnjmsQcFBfHggw/6euiz9uxnKFeunC9YzrxgXX7UqFGD8ePHk5iYyIgRI5g/fz5169Zl7NixTJgwgeXLl9O9e/c8r5Gx6F67du18Q9lnzJiRrVz16tX9jiMjI0lJSWH16tX07dvXb/h9pUqVaNasWZ695N9++y0jR45k5syZpKam5jp3PiQkhIMHD/oWLdy8eTNDhgwhKioqz/dr3LhxxMbGFtqieQrqRURERERECknz5s0ZMWIEDzzwgF965uHjOfnhhx+YMWMGkyZN4uabb6ZTp05MmzaNyZMns3v3bubNm0fjxo1Zvnw5Tz/9NMuXL2f16tWYme8aS5cu5YsvviA9PZ1WrVoxZswY2rdvXxiPCUBsbCzt27fn5Zdfpm7duhw+fJiPPvqI7777zhcIA4wcORKAd955x/flQ2JiIrNmzQI8c+qnTp0KwPjx4/0C8jVr1vD222/73Xfv3r106tSJevXq0bhx42z1qlatGiEhIWzbtg3A7z366quv6NChA4mJiVSrVo05c+YwYMCAXJ+xX79+PP300wAMGzYM8Kz437RpU5xzNG7cmNGjR/vqceuttxIREUHbtm2566678vEunjwF9SIiIiIiIoWkc+fOOaYvXbqUqlX9e/+bN2/u+/mnn35ixYoVjBw5kltuuQXwrAJfv359Fi5cyAUXXMC+ffuoU6cOM2fOJDg42C9YjY+Pp1+/ftx1113Mnj2bN954g+7duxMVFUWZMmVO6hnS09MJCso7dDx06BA33XQTaWlpjBs3jr59+1KvXj1mzpzJ1q1biYyMZMSIEdSuXZumTZvSoEEDv7n148aNo0qVKvz+++8MHjyYr7/+GoDevXtnu1fmnvq0tDT+9re/ERkZ6beaf5s2bfj55585duwYYWFhtGrVil9++YXzzz/ft3hefHw83bt356mnnqJ///4AdO3aNdvvLDk5mapVq7Jp06Yce/zLli1L2bJl+eGHH/jzzz9p2rSpbz5+QkJCtjUETjcF9SIiIiIiIkWsQoUKfqutA77t1MAzhH7Dhg2+LdIyy7ra/UUXXcTatWt9xykpKXTt2pWwsDAGDRrE7NmzueOOO+jfvz+9evVi9OjR+a5nUlISO3fupFy5cnmWK1++PO3atSMiIoK6detSs2ZN0tLSiIiIYPDgwbRp04aQkBDS0tJ48skn6datm284/oYNG3jllVcYM2YMPXv25M4776RJkya++eebNm2ib9++flvTxcfH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gC+AvsA5KKgXEREREZEiNG7cOK6++mouuugiYmJi/PIuv/xy389z587lxhtvpGXLlnz99dfccMMNzJgxg0svvZRWrVrRpk0bUlNTGTNmDE2bNmXatGncfPPNfte7+eabfWmbNm1i8eLFtGvXzpd/5MgR1q1bl2tdX331VZ577jlmz55NTEwMrVu3ZuXKlb78tWvXMmTIEADeeecdbr/9dl9e165dqVixIvPnzycwMJAff/yRCy64wJdfoUIFDhw44Hc/5xz79+/n0KFDgOcLkLCwMMLDw33nREVFcezYMQICAqhYsSLly5f3nR8cHEylSpV851SqVInIyEhCQkKoWLFirs8J8NZbb/Hkk08yfvx4vyD+1ltvzVY287SJzDZu3MioUaOYPn26X/qjjz7KAw88wL333st5552XZz1ORVH21AM8CQQDH+KZ6/4JkPH1U0dgMnAhsMM5t9rMWgIjgcfxfAkwFRiR5ZoV8QTs2TjnPjazPsCzeIbhbwRaOef2nc6HEhERERERyc3333/Pm2++yQsvvOBL27hxo1+wC/gNLQ8NDWXWrFlUr16d6667jm+++Ybff/+dW2+9ldTUVIYOHcqgQYP48MMPsw1jX7ZsGatXrwZg//79pKam8s9//jPH+2Q1YMAAZs+ezfTp0wkJCWHp0qUsWLDAl9+qVSvuvfdeOnfu7Hfe0aNH6d69O/3796d169bMnz8fgD59+vjdOycHDx7kkksu8R1feumldOjQgTZt2rB+/XpatGhBVFQUO3bsICUlhdtuu40GDRr4yg8aNIgJEyb4jl966SXfz9HR0bkG4wA7duxg2rRpXHfddbRs2ZJXX30VgJUrV/qNLpgzZw7vv/9+tvO3bNlC+/bt6dmzJ7GxsX55zZs3p23btrRr147Zs2dTrVq1PN+HgirSoN45lwL0976y5k0BpmRJWwo0PsE1G5wgfyIw8SSrKiIiIiIiJVBElxtzzyvE+yZMXVag8zLmlycnJxMcHHxS5x4/fpz4+HgaNWpESEgIPXv29A2zv/vuuxk/fjy9evWidu3a/nVNSPCtor5161YAv1XVM4a15+Shhx7i4YcfJiQkhFatWtG9e3fq1avny886/B7g3HPPJTw8nJ49e3L//ffzr3/966Ses0KFCsTHx7N48WLat2/PoUOHSE5OpnLlynTo0IElS5b4yh49epROnTrx3Xff+dKeeuopBg4cSN++fbnyyivp3Lmzb/j9a6+9xqJFi5g2bVqO937mmWcAz0gK55zvy4UmTZpkK5v1y4HZs2czYMAA2rdvz/Dhw3O8/ujRo+nXrx/XX389gwYNok+fPif13uRHUffUi4iIiIiInDV69epFSkqKX2CcX8888wxdu3alRYsW7N69m+3bt7N7926eeeYZ5syZw2233cbEiRNxztGtWzdfcH/77bf7hsS3bduWoKAgHnzwQV8Pfdae/czq1KnD999/z1133cW1115L5cqV/XrRwX/4PcDmzZupWrUqN954I9OnT6dChQp8+OGHJ/28y5YtA6Bdu3a+oewzZszIVi7rCvGRkZGkpKSwevVq+vbt6zf8vlKlSjRr1izPXvJvv/2WkSNHMnPmTFJTU3OdOx8SEsLBgwd9ixZu3ryZIUOGEBUV5bfAX1bjxo0jNja20BbNU1AvIiIiIiJSSJo3b86IESN44IEH/NIzDx/PyQ8//MCMGTOYNGkSN998M506dWLatGlMnjyZ3bt3M2/ePBo3bszy5ct5+umnWb58OatXr/bbgm7p0qV88cUXpKen06pVK8aMGUP79u1zvWdaWhoTJ07k2WefJTExkTFjxnDjjTfSoUMHv3I7d+6kQYMG/PHHHwQF+YeUV1xxBd9++20+353/SUxMZNasWYBnTv3UqVMBGD9+vF9AvmbNmmyr7+/du5dOnTpRr149GjfOPtC7WrVqhISEsG3bNgC/9+irr76iQ4cOJCYmUq1aNebMmcOAAQNyrWe/fv14+umnARg2bBgAx44do2nTpjjnaNy4MaNHj/bV49ZbbyUiIoK2bdty1113nezbki/5DurN7O9AjHPuqUKpiYiIiIiIyBkm69zzDEuXLqVqVf/dt5s3b+77+aeffmLFihWMHDmSW265BfCsAl+/fn0WLlzIBRdcwL59+6hTpw4zZ84kODjYL1iNj4+nX79+3HXXXcyePZs33niD7t27ExUVRZkyZXKs0969e1m1ahXvvvsuDz/8MAC9e/fOtgBchowF/+bNm8f1118PeL4Y+Otf/+o7Pnr0KGFhYSd8n8aNG0eVKlX4/fffGTx4MF9//bXv/lll7qlPS0vjb3/7G5GRkX6r+bdp04aff/6ZY8eOERYWRqtWrfjll184//zzfYvnxcfH0717d5566in69/fMEO/atWu231lycjJVq1Zl06ZNOfb4ly1blrJly/LDDz/w559/0rRpU998/ISEBL+dCQpDvoJ6M6sGPAVkf0dFRERERESKSF5z25OSkvIVQJYEFSpU8FttHfBtpwaeIfQbNmzwbZGWWdbV7i+66CLWrl3rO05JSaFr166EhYUxaNAgZs+ezR133EH//v3p1asXo0ePzrFOVatW9fWQZ3j++edp27YtF198MRERnlULdu/eTfPmzdmyZQuBgYF+K9EvX76cqlWr0qxZMypVqsSvv/5KxYoVadOmDSEhITned8OGDbzyyiuMGTOGnj17cuedd9KkSRPf/PNNmzbRt29fv63p4uPjiY6OJjAwkA8//JCAgACOHz/um+vvnGPKlCn06NGDmJgYFi9eDHhWys9oI9HR0axbt47g4GD69+/Pl19+yRVXXJFjHeF/uxSsW7eOmjVrZstfsmQJl112mS+gT01N5dChQ5x77rm5XvN0OGFQb2aVgYXAB0BZM/srcATYB/zmnPu9UGsoIiIiIiJyFhoyZIjf3PVHHnmEpKQkv5XehwwZwh9//OE7Tk1N5f7772fjxo0sXrzYb3h8//79CQ8Pz3P+d1bh4eGMHz+e9evX8/zzz9OxY0eSkpIAqFixYrbh95MmTeKOO+6gR48eLFiwgPLly7NmzRq6detG2bJlsy3qB57geujQoTRq1MiX1qVLF79t9AC/dQl69OjBqFGjAM8XJPfccw+ffPJJtmtnXfDusssu48svv/QdZ1688Oqrr2bt2rUMHTqU6667jjvvvNP3ZUGjRo34/PPPqVixot+q+BkSEhIYO3Ysjz/+uC9t3759OOdyLH865RrUm1ldoA2e7eRm4emlTwW2A+Xw7PeOmSUA3wDPeVerFxERERERkTzs378/W0Ccnp6ea/kPPviA9957z28leIDVq1fTqVMn33FQUBBNmzZl8ODBXHTRRezcudOXFxoayiOPPAKQ70XbgoKCmDt3Lu+99x59+/alatWq2bbiy7B27VoWL17Mc889x5EjRxg+fDgdOnRgz549DBgwgI8//ti31V5mNWrUoE+fPvz444++tIxt9BYtWsRDDz3EoEGDePXVV/noo4+oU6dOtmvMnDnT7zghIYFq1aqxdevWbCMichMaGkqNGjW47777GDlyJJ999hlTp071jTCoWLFitikT4Pm9DR48mJiYGL+h+z/99BMRERG+4f6FJa+e+seAC4C7nXOLwbegwPXOuT1mFghUBuoA3YBpePaCFxERERERkTy0bNkyX+XWr1/PhAkTmDlzJm+++SbVq1dn0qRJXHPNNZgZ69evZ+JE/x28M+bD52X79u0459izZ4/fXPzctG/fnosvvpjw8HA2btxIcHAwgYGBvvzk5GQeeeQRunTpQpkyZbj77rsJDQ3lscceIyIiggMHDtC7d28++OADAgMDSUlJyfVeGSvZT506laVLlzJ16lRiY2NJTEykefPm9OjRg44dO1KnTh3fon25ybpyf4bZs2fTokWLbOkBAQG0bt2a2NhYpkyZ4puXD2T7EgY80wAGDhzIihUrWLhwIcuXL2fPnj00bNiQadOm+Y0+KCx5BfU9vPvK58g5lwbsBnab2R/AHae7ciIiIiIiImeijRs3ZuvxzthyDuCBBx5g6dKlJCcn07JlS5YsWUKjRo1ITU1lwYIFjBo1ivj4eO677z4uvPDCk77/+PHjefPNNwkKCmLQoEH5OueSSy7htttu448//mDQoEF+XwYcP36cxo0bM2zYMObPn0+ZMmWYMWOGbx7+0KFD2bt3L59++imPPPIIUVFR1KhRI8f77N27l8GDB3Pbbbexdu1a3xZyjz32GC1btuSNN96gW7duzJs3j2rVqrF58+aTfv6MRf5yU7ZsWfr06UPr1q354Ycf6NixY7Ye/8mTJzN06FAaNmzIkiVLqF69OvHx8QwbNozt27cTGRnJv//975Ou28ky51z+C5ulAx2A5c65fZnSuwGPOOcanvYaFpHDhw/n/40oBnFxcdSqVau4qyGllNqPFJTajhSU2o6cCrUfATh8+DBRUVEndU5JXigvMTGR4OBggoKCSEhIIDw8PM8e8jVr1pCcnMxVV11FeHh4ge+bkpJCXFwcdevWzZaXMdw/8wJ9p4tzLs/nO1F+UStI29m+fTvbtm3jpptuOi11yE+bj4qKyvam5TWn3lzOEf8EIMLMNgJvAJOAX4HuJ1VjERERERGRs0TmbeQyeq/zcu21156W+wYHB+cY0EPhBPMZThSwl6SAvqAuvPDCAo2SON3y+i0+ambfmlnzTGkOqAvUB94BhgPrgDjn3LeFV00RERERERERySqvoP514H1gvpk9500zwDnntjjnXgEuBr4FVpiZFskTERERERER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pRTUi4iIiIiIiJRSCupFRERERERESikF9SIiIiIiIiKllIJ6ERERERGRIpKYmMjgwYP56aefivzeJ7OdeVFufV7cEhISeOGFF0hOTi7uqhSIgnoREREREZEicOjQITp27MiKFSuIiYnJsUx6ejpJSUl+r7fffpvo6OhcX4MHDz7hvdPS0jjnnHP4+OOP6dmzJ2+99RaJiYm5lr/33nuZO3euX1qrVq14++23cyz/3nvv8cwzz5CUlETv3r2z1TE+Pt5Xtm7duqxYscLv/E2bNvlt/5eUlER0dDQ7d+4EYNmyZdSvXz/bfVevXp3r+1KpUiVmzpxJixYtSE1N9bteZsOHD2flypWkpaXleq1WrVrl+l4dPXqUsWPHkpaWBsDx48fp1asXW7ZsyfWc00lBvYiIiIiISCH7+OOPuf7661m2bBmbN2+mRo0avoDxoYce8pVbuXIllStX9nsB7N27l7179zJz5kyqVKniO967dy8jRow44f0DAwOJjo4mIiKCxx9/nK1btzJmzJgcy44dO5ZvvvmGpk2bcujQIfbt28e+fftISUnhyJEjvuPMPdvt27enevXq3HPPPaSmpvLss8/66ncy0tPT6d+/P4899hgAI0aMoH///owfP55Dhw7Rv39/Ro4c6St/1VVXsXXrVtq1a0fv3r3ZunUrjz32GC1atOC777474f3mzZvH9OnT+de//kVAgCc8XrhwIevWrfO9hg8fnuc13njjDWbPnk1gYCAAISEh7Nq1i4ULF57UsxdUUJHcRURERERE5CyTkJDA7Nmzefvtt9m2bRsDBgzg9ttv9+VnBJNdunTxpdWoUYNhw4axefNmVq1aRY8ePbjyyitJTEzk+PHjLF68mCuvvJLDhw8DEBoa6tfDXbduXfbs2ZNrndq0aeN3vH37dt58803f8auvvspzzz3H7NmziYmJoXXr1qxcudKXv3btWoYMGQLAO++84/c8Xbt2pWLFisyfP5/AwEB+/PFHLrjgAl9+hQoVOHDggN/9nXPs37+fQ4cOAbBv3z7CwsIIDw/3nRMVFcWxY8cICAigYsWKlC9f3nd+cHAwlSpV8p1TqVIlIiMjCQkJoWLFirm+DwBvvfUWTz75JBMnTvQre+utt2Yre+211+Z4jY0bNzJq1CimT5/ul/7oo4/ywAMPcO+993LeeeflWY9TpaBeRERERESkEAQHB7Nq1SpatWpFzZo16d+/P7Vr16ZZs2Y899xzvPnmm0ycOJEmTZr4zqlevTr9+/dnzpw5/PTTT/Tv3x/wDH1fs2aNr9y8efMAaNasGR9++KEv/YsvvvANA8/qoYceolGjRvTu3duXFhYW5vt5wIABzJ49m+nTpxMSEsLSpUtZsGCBL79Vq1bce++9dO7c2e+6R48epXv37vTv35/WrVszf/58APr06cM///nPPN+jgwcPcskll/iOL730Ujp06ECbNm1Yv349LVq0ICoqih07dpCSksJtt91GgwYNfOUHDRrEhAkTfMcvvfSS7+fo6Ohcg3GAHTt2MG3aNJo3b07Tpk0ZN24c8L/REhnmzJnD+++/n+38LVu20L59e3r27ElsbKxfXvPmzWnbti3t2rVj9uzZVKtWLc/34VQoqBcRERERESkEoaGhfr3gKSkpdO3alXPPPZfU1FRq1KjB5Zdfnu/rjR07ls6dOzNjxgxuv/12Zs2a5RfQA7nO1QeoXbs2R44coVKlSjnmP/TQQzz88MOEhITQqlUrunfvTr169fzqnzH8PsO5555LeHg4PXv25P777+df//pXvp8HPD3x8fHxLF68mPbt23Po0CGSk5OpXLkyHTp0YMmSJb6yR48epVOnTn7D6p966ikGDhxI3759ufLKK+ncuTOTJk1i3bp1vPbaayxatIhp06bleO9nnnkGgH//+9+kp6f7vlzI/CVLhqxfDsyePZsBAwbQvn37XIfnjx49mn79+nH99dczaNAg+vTpc1LvTX4pqBcRERERkVJj6JQuJy5UCJ59YGqBzjt8+DArVqzg008/Zf78+VSrVo3u3buzbNkyNmzYwLFjx9i2bRuAb/j4iQwcOJBrrrkm1/wKFSpk662vXr06ffr08QuSs6pTpw7ff/89d911F9deey2VK1f260UH/+H3AJs3b6Zq1arceOONTJ8+nQoVKmT7oiE/li1bBkC7du18Q9lnzJiRrVz16tX9jiMjI0lJSWH16tX07dvXb/h9pUqVaNasWZ695N9++y1PP/0006ZNIzU1Ndd58CEhIRw8eJBzzjnH99xDhgwhKirKb/pDVuPGjSM2NrZQF81TUC8iIiIiIlII3n//fbp3706VKlVo2bIlU6ZM4aKLLqJbt26+ofTXXXedr3zbtm2ZMmXKCa+b2/D6DN9//z3OOYYNG0Z4eDiPPfYYgYGBxMXFMWrUqFyvOXHiRJ599lkSExMZM2YMN954Ix06dPArt3PnTho0aMAff/xBUJB/OHnFFVfw7bffnrD+WSUmJjJr1izAM6d+6lTPFyjjx4/3C8jXrFmTbfX9vXv30qlTJ+rVq0fjxo2zXbtatWqEhIT4vjgxM1/eV199RYcOHUhMTKRq1arMmTOHAQMG5FrPfv368fTTTwMwbNgwAI4dO0bTpk1xztG4cWNGjx7tq8ett95KREQEbdu25a677jrZtyXfFNSLiIiIiIgUgnbt2nHllVdywQUXkJiYyBtvvMF9991H48aN+fnnn6lQoQIAv/zyC02bNuWvf/2r3/l//vknL7/8MpGRkb609PR0jh8/7hecZpWx6FuZMmUoU6aMr/c/PDychIQEfvzxR2rXru13zt69e1m1ahXvvvsuDz/8MAC9e/fOtgBchoxh/vPmzeP6668HPF8M/PWvf/UdHz161G/Ofm7GjRtHlSpV+P333xk8eDBff/217/5ZZe6pT0tL429/+xuRkZG88847vvQ2bdrw888/c+zYMcLCwmjVqhW//PIL559/vu+9iY+Pp3v37jz11FO+dQu6du2abb2A5ORkqlatyqZNm3Ls8S9btixly5blhx9+4M8//6Rp06a++fgJCQl+v7vCoqBeRERERESkEJgZVapU4amnnmLatGnExMTw8MMPc+DAAYKDgwHPYm1/+9vf6NWrF3fccQe7d+9mzpw5vPfee2zfvp1ly5b5gk6An376iYCAAM4999yTrk+ZMmVo1qwZ8+fPz9YjXbVqVV8PeYbnn3+etm3bcvHFFxMREQHA7t27ad68OVu2bCEwMNBvJfrly5dTtWpVmjVrRqVKlfj111+pWLEibdq0ISQkJMc6bdiwgVdeeYUxY8bQs2dP7rzzTpo0aeKbf75p0yb69u3L559/7jsnPj6e6OhoAgMD+fDDDwkICOD48eO+uf7OOaZMmUKPHj2IiYlh8eLFgGfhwowvGaKjo1m3bh3BwcH079+fVatW5djTnyFj7YN169ZRs2bNbPlLlizhsssu8wX0qampHDp0qEC/p5OloF5EREREREqNvOa2JyUl5atnuCgFBwdTs2ZNxowZwx133MGRI0fo3r079913H+3atWP48OF07dqVJ554AvCsBr9w4UI6depE27Ztfb3sL774IgATJkygdevWvuA+Y2/03Pz888+MHDmSFStWcPXVV9OhQwdefPFF+vXrB8DUqVPp1KmT70uGzMLDwxk/fjzr16/n+eefp2PHjiQlJQGe0QBZh99PmjSJO+64gx49erBgwQLKly/PmjVr6NatG2XLls02OgA8wfXQoUNp1KiRL61Lly5+2+gBfgv29ejRwzeNoEKFCtxzzz188skn2a6ddcG7yy67jC+//NJ3nPmZr7zyStauXcvQoUO57rrruPPOO31fFjRq1IjPP/+cihUr+q2KnyEhIYGxY8fy+OOP+9L27duHcy7H8qebgnoREREREZFC9MADD/h+TktL44YbbuCpp55i+/btvPHGG377otevXz/HxdpGjhzJrFmzWLBgARMmTKB9+/ZcfPHFvPLKK37l9uzZw5IlS1i2bBlLliwhMTGR+Ph4WrRowZ133knNmjV5/vnnee+997jhhht49NFHufvuu3MM6oOCgpg7dy7vvfceffv2pWrVqn77zme2du1aFi9ezHPPPceRI0cYPnw4HTp0YM+ePQwYMICPP/6Y1atXZzuvRo0a9OnThx9//NGXlrGN3qJFi3jooYcYNGgQr776Kh999BF16tTJdo2ZM2f6HSckJFCtWjW2bt2ar4UHwbNTwYUXXsh9993HyJEj+eyzz5g6dapvhEHFihWpWrVqtvPS09MZPHgwMTExfkP3f/rpJyIiInzD/QuTgnoREREREZFCsn//fjZu3MiaNWtYsWIFa9eupUGDBowZM4aOHTsSGhqa67nx8fHs2LGD1atX++aMz58/n5o1a7J+/XpefvllWrZsyVtvvcXNN98MwNy5c3nzzTe56aabGD9+PDfccEO2ed1jx46lS5cu9OrVi7p16xIeHp7nM2R8gRAeHs7GjRsJDg72GyGQnJzMI488QpcuXShTpgx33303oaGhPPbYY0RERHDgwAF69+7NBx98QGBgICkpKbneK2Ml+6lTp7J06VKmTp1KbGwsiYmJNG/enB49etCxY0fq1KnjW7QvN1lX7s8we/ZsWrRokS09ICCA1q1bExsby5QpU3zz8oFsoxLA8/sZOHAgK1asYOHChSxfvpw9e/bQsGFDpk2b5jf6oDApqBcRERERESkEc+bMoVu3blSvXp0rrriCe+65hzfffJMaNWrk6/zRo0czefJkrrnmGh5++GHat2/v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\n",
      "text/plain": [
       "<Figure size 1080x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 以折线图的形式展现出来：\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "plt.style.use(\"fivethirtyeight\")\n",
    "\n",
    "# windows解决中文乱码\n",
    "# plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签\n",
    "\n",
    "# mac解决中文乱码\n",
    "plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']\n",
    "\n",
    "plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "# 在jupyter notebook上直接显示图表\n",
    "fig= plt.subplots(figsize=(15,5))\n",
    "plt.plot(result[\"参数\"],result[\"伯努利训练模型得分\"],label=\"伯努利训练模型得分\")#画折线图\n",
    "plt.plot(result[\"参数\"],result[\"伯努利待测模型得分\"],label=\"伯努利待测模型得分\")\n",
    "plt.plot(result[\"参数\"],result[\"多项式训练模型得分\"],label=\"多项式训练模型得分\")\n",
    "plt.plot(result[\"参数\"],result[\"多项式待测模型得分\"],label=\"多项式待测模型得分\")\n",
    "plt.rcParams.update({'font.size': 15})\n",
    "plt.legend()\n",
    "plt.xticks(fontsize=15) #设置坐标轴上的刻度字体大小\n",
    "plt.yticks(fontsize=15)\n",
    "plt.xlabel(\"参数\",fontsize=15) #设置坐标轴上的标签内容和字体\n",
    "plt.ylabel(\"得分\",fontsize=15)\n",
    "plt.show()\n",
    "# 从图中可以看出BernoulliNB（伯努利）比 MultinomialNB（多项式）的性能和稳定性要好很多，\n",
    "# 对于MultinomialNB（多项式）模型 性能会随着alpha的增加而逐渐增加"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
